package com.sia.springcloud.controller;

import com.alibaba.fastjson.JSON;
import com.sia.springcloud.service.ICollectService;
import com.sia.springcloud.result.GridDataResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;

/**
 * @Author: Sirius
 * @Date: 2021/12/27 17:04
 * @Description:
 **/
@Slf4j
@RestController
@RequestMapping("//collectController")
public class CollectController {

    @Resource
    private ICollectService collectService;


    /**
     * 开启一个设备的数采
     * <p>
     * <p>
     * 不论如何都要修改数据库开启状态，即使没有通过正常开启，也可以通过心跳保护来进行开启
     *
     * @param deviceId
     * @return
     */
    @RequestMapping("/startCollect")
    public String startCollect(String deviceId) {
        log.info("设备 {} 正在开启数采", deviceId);
        int id = Integer.parseInt(deviceId);

        return collectService.startCollect(id);
    }


    /**
     * 关闭某个设备的数采
     * <p>
     * 不论如何都要修改数据库关闭状态，即使没有通过正常关闭，也可以通过系统自检来进行关闭
     *
     * @param deviceId
     * @return
     */
    @RequestMapping("/stopCollect")
    public String stopCollect(String deviceId) {
        log.info("设备 {} 正在关闭数采", deviceId);
        return collectService.stopCollect(Integer.parseInt(deviceId));
    }



    /**
     * 开启心跳保护
     * <p>
     * 这个应该在项目部署好之后启动
     * <p>
     * 只有当请求参数为“1”，才会开启心跳保护
     *
     * @return
     */
    @RequestMapping("/setHeartbeatProtect")
    public String setHeartbeatProtect(HttpServletRequest request) {
        String protect = request.getParameter("protect");
        if ("1".equals(protect)) {
            return collectService.heartbeatProtect(true);
        } else {
            return collectService.heartbeatProtect(false);
        }

    }

    /**
     * 获取心跳保护状态
     * <p>
     * 开启或者关闭
     *
     * @return
     */
    @RequestMapping("/heartbeatProtectStatus")
    public String heartbeatProtectStatus() {
        return collectService.heartbeatProtectStatus();

    }


    /**
     *
     * 获取正在运行的协议微服务的种类
     *
     * @return
     */
    @RequestMapping("/protocolList")
    public String protocolList() {
        return collectService.protocolList();
    }





    /**
     * 获取指定设备数采状态
     *
     * @return
     */
    @RequestMapping("/deviceStatus")
    public String deviceStatus(String deviceId) {
        return collectService.deviceStatus(deviceId);
    }


    /**
     * 写变量方法
     *
     * @param deviceId
     * @param value
     * @return
     */
    @RequestMapping("/writeVariable")
    public String writeVariable(String deviceId, String value) {
        return null;
    }


}

